package com.softeem.music_sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.softeem.music_sys.comm.Result;
import com.softeem.music_sys.entity.Comment;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author RD
* @description 针对表【comment(评论信息表)】的数据库操作Service
* @createDate 2025-11-07 11:19:17
*/
public interface CommentService extends IService<Comment> {

    /**
     * 根据目标对象获取评论列表
     */
    Page<Comment> getCommentsByTarget(Object type, Integer targetId, Integer page, Integer limit);

    /**
     * 根据用户ID获取评论列表
     */
    Page<Comment> getCommentsByUser(Integer userId, Integer page, Integer limit);

    /**
     * 获取热门评论
     */
    List<Comment> getHotComments(Integer limit);

    /**
     * 获取最新评论
     */
    List<Comment> getNewComments(Integer limit);

    /**
     * 评论点赞
     */
    boolean likeComment(Integer commentId);
    
    /**
     * 发布评论
     */
    Result addComment(Comment comment);
    
    /**
     * 删除评论
     */
    Result deleteComment(Integer id);
    
    /**
     * 获取评论详情
     */
    Result getCommentById(Integer id);
    
    /**
     * 获取对象的评论（Controller调用）
     */
    Result getCommentsByTargetController(Object type, Integer targetId, Integer page, Integer limit);
    
    /**
     * 获取用户的评论（Controller调用）
     */
    Result getCommentsByUserController(Integer userId, Integer page, Integer limit);
    
    /**
     * 点赞评论（Controller调用）
     */
    Result likeCommentController(Integer id);
    
    /**
     * 获取热门评论（Controller调用）
     */
    Result getHotCommentsController(Integer page, Integer limit);
    
    /**
     * 获取最新评论（Controller调用）
     */
    Result getNewCommentsController(Integer page, Integer limit);
    
    /**
     * 获取所有评论（Controller调用）
     */
    Result getAllCommentsController(Integer page, Integer limit);
}